#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# @Time    : 2018/11/20 19:33
# @Author  : liujiantao
# @Site    : 
# @File    : op_merge_all_ftr.py
# @Software: PyCharm
import os

from tiancheng.base.base_helper import *


def get_features(data):
    label = data[tag_header].drop_duplicates(keep='first',inplace=True)
    uid_gb = data.groupby(['UID'])
    cols = data.columns.values.tolist()
    cols.remove(tag_hd.Tag)
    cols.remove(tag_hd.UID)
    for feature in cols:
        print(feature)
        label = label.merge(uid_gb[feature].count().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].nunique().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].max().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].min().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].sum().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].mean().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].std().reset_index(), on='UID', how='left')
        label = label.merge(uid_gb[feature].var().reset_index(), on='UID', how='left')
    return label


# tag = get_tag_train_new()
# sub = get_sub()
# print(tag.shape)
# print(sub.shape)
# print(sub.shape[0] + tag.shape[0])
# op_merge = pd.read_csv(data_base_path + 'op_merges.csv')
# opmerge_ftrs = get_features(op_merge)
# cols_op = opmerge_ftrs.columns.values.tolist()
# opmerge_ftrs.columns = tag_header + [str(i) + 'op' + str(v) for i, v in enumerate(cols_op[2:])]
# opmerge_ftrs.to_csv(features_base_path + 'opmerge_ftrs.csv', index=False)
# print(opmerge_ftrs.shape)  # 62377
# uid = pd.comcat([tag,sub])
# trsct_merge_ftrs = pd.read_csv(features_base_path + 'trsct_merge_ftrs.csv')
# trsct_merge_ftrs = trsct_merge_ftrs.drop_duplicates(tag_header)
# trsct_merge_ftrs.to_csv(features_base_path + 'trsct_merge_ftrs.csv', index=False)
# print(123)

def merge_ftr_analysis():
    """

    :return:
    """
    op = get_opmerge_ftrs()
    trsct = get_trsct_merge_ftrs()
    op = fill_mean(op)
    trsct = fill_mean(trsct)
    trsct.pop(tag_hd.Tag)
    op.fillna(-1, inplace=True)
    trsct.fillna(-1, inplace=True)
    merge = op.merge(trsct, on='UID', how='left')
    print(merge.shape)

cols = ['0opday_x', '1opday_y', '2opday_x', '3opday_y', '4opday_x', '5opday_y', '6opday_x', '7opday_y', '8opsuccess_x', '9opsuccess_y', '10opsuccess_x', '11opsuccess_y', '12opsuccess_x', '13opsuccess_y', '14opsuccess_x', '15opsuccess_y', '16opos_x', '17opos_y', '18opos_x', '19opos_y', '20opos_x', '21opos_y', '22opos_x', '23opos_y', '24opday_uid_cnt_x', '25opday_uid_cnt_y', '26opday_uid_cnt_x', '27opday_uid_cnt_y', '28opday_uid_cnt_x', '29opday_uid_cnt_y', '30opday_uid_cnt_x', '31opday_uid_cnt_y', '32opday_op_cnt_rate_x', '33opday_op_cnt_rate_y', '34opday_op_cnt_rate_x', '35opday_op_cnt_rate_y', '36opday_op_cnt_rate_x', '37opday_op_cnt_rate_y', '38opday_op_cnt_rate_x', '39opday_op_cnt_rate_y', '40opday_uid_nunique_x', '41opday_uid_nunique_y', '42opday_uid_nunique_x', '43opday_uid_nunique_y', '44opday_uid_nunique_x', '45opday_uid_nunique_y', '46opday_uid_nunique_x', '47opday_uid_nunique_y', '48opday_op_nunique_rate_x', '49opday_op_nunique_rate_y', '50opday_op_nunique_rate_x', '51opday_op_nunique_rate_y', '52opday_op_nunique_rate_x', '53opday_op_nunique_rate_y', '54opday_op_nunique_rate_x', '55opday_op_nunique_rate_y', '56opmode_uid_cnt_x', '57opmode_uid_cnt_y', '58opmode_uid_cnt_x', '59opmode_uid_cnt_y', '60opmode_uid_cnt_x', '61opmode_uid_cnt_y', '62opmode_uid_cnt_x', '63opmode_uid_cnt_y', '64opmode_op_cnt_rate_x', '65opmode_op_cnt_rate_y', '66opmode_op_cnt_rate_x', '67opmode_op_cnt_rate_y', '68opmode_op_cnt_rate_x', '69opmode_op_cnt_rate_y', '70opmode_op_cnt_rate_x', '71opmode_op_cnt_rate_y', '72opmode_uid_nunique_x', '73opmode_uid_nunique_y', '74opmode_uid_nunique_x', '75opmode_uid_nunique_y', '76opmode_uid_nunique_x', '77opmode_uid_nunique_y', '78opmode_uid_nunique_x', '79opmode_uid_nunique_y', '80opmode_op_nunique_rate_x', '81opmode_op_nunique_rate_y', '82opmode_op_nunique_rate_x', '83opmode_op_nunique_rate_y', '84opmode_op_nunique_rate_x', '85opmode_op_nunique_rate_y', '86opmode_op_nunique_rate_x', '87opmode_op_nunique_rate_y', '88opsuccess_uid_cnt_x', '89opsuccess_uid_cnt_y', '90opsuccess_uid_cnt_x', '91opsuccess_uid_cnt_y', '92opsuccess_uid_cnt_x', '93opsuccess_uid_cnt_y', '94opsuccess_uid_cnt_x', '95opsuccess_uid_cnt_y', '96opsuccess_op_cnt_rate_x', '97opsuccess_op_cnt_rate_y', '98opsuccess_op_cnt_rate_x', '99opsuccess_op_cnt_rate_y', '100opsuccess_op_cnt_rate_x', '101opsuccess_op_cnt_rate_y', '102opsuccess_op_cnt_rate_x', '103opsuccess_op_cnt_rate_y', '104opsuccess_uid_nunique_x', '105opsuccess_uid_nunique_y', '106opsuccess_uid_nunique_x', '107opsuccess_uid_nunique_y', '108opsuccess_uid_nunique_x', '109opsuccess_uid_nunique_y', '110opsuccess_uid_nunique_x', '111opsuccess_uid_nunique_y', '112opsuccess_op_nunique_rate_x', '113opsuccess_op_nunique_rate_y', '114opsuccess_op_nunique_rate_x', '115opsuccess_op_nunique_rate_y', '116opsuccess_op_nunique_rate_x', '117opsuccess_op_nunique_rate_y', '118opsuccess_op_nunique_rate_x', '119opsuccess_op_nunique_rate_y', '120optime_uid_cnt_x', '121optime_uid_cnt_y', '122optime_uid_cnt_x', '123optime_uid_cnt_y', '124optime_uid_cnt_x', '125optime_uid_cnt_y', '126optime_uid_cnt_x', '127optime_uid_cnt_y', '128optime_op_cnt_rate_x', '129optime_op_cnt_rate_y', '130optime_op_cnt_rate_x', '131optime_op_cnt_rate_y', '132optime_op_cnt_rate_x', '133optime_op_cnt_rate_y', '134optime_op_cnt_rate_x', '135optime_op_cnt_rate_y', '136optime_uid_nunique_x', '137optime_uid_nunique_y', '138optime_uid_nunique_x', '139optime_uid_nunique_y', '140optime_uid_nunique_x', '141optime_uid_nunique_y', '142optime_uid_nunique_x', '143optime_uid_nunique_y', '144optime_op_nunique_rate_x', '145optime_op_nunique_rate_y', '146optime_op_nunique_rate_x', '147optime_op_nunique_rate_y', '148optime_op_nunique_rate_x', '149optime_op_nunique_rate_y', '150optime_op_nunique_rate_x', '151optime_op_nunique_rate_y', '152opos_uid_cnt_x', '153opos_uid_cnt_y', '154opos_uid_cnt_x', '155opos_uid_cnt_y', '156opos_uid_cnt_x', '157opos_uid_cnt_y', '158opos_uid_cnt_x', '159opos_uid_cnt_y', '160opos_op_cnt_rate_x', '161opos_op_cnt_rate_y', '162opos_op_cnt_rate_x', '163opos_op_cnt_rate_y', '164opos_op_cnt_rate_x', '165opos_op_cnt_rate_y', '166opos_op_cnt_rate_x', '167opos_op_cnt_rate_y', '168opos_uid_nunique_x', '169opos_uid_nunique_y', '170opos_uid_nunique_x', '171opos_uid_nunique_y', '172opos_uid_nunique_x', '173opos_uid_nunique_y', '174opos_uid_nunique_x', '175opos_uid_nunique_y', '176opos_op_nunique_rate_x', '177opos_op_nunique_rate_y', '178opos_op_nunique_rate_x', '179opos_op_nunique_rate_y', '180opos_op_nunique_rate_x', '181opos_op_nunique_rate_y', '182opos_op_nunique_rate_x', '183opos_op_nunique_rate_y', '184opversion_uid_cnt_x', '185opversion_uid_cnt_y', '186opversion_uid_cnt_x', '187opversion_uid_cnt_y', '188opversion_uid_cnt_x', '189opversion_uid_cnt_y', '190opversion_uid_cnt_x', '191opversion_uid_cnt_y', '192opversion_op_cnt_rate_x', '193opversion_op_cnt_rate_y', '194opversion_op_cnt_rate_x', '195opversion_op_cnt_rate_y', '196opversion_op_cnt_rate_x', '197opversion_op_cnt_rate_y', '198opversion_op_cnt_rate_x', '199opversion_op_cnt_rate_y', '200opversion_uid_nunique_x', '201opversion_uid_nunique_y', '202opversion_uid_nunique_x', '203opversion_uid_nunique_y', '204opversion_uid_nunique_x', '205opversion_uid_nunique_y', '206opversion_uid_nunique_x', '207opversion_uid_nunique_y', '208opversion_op_nunique_rate_x', '209opversion_op_nunique_rate_y', '210opversion_op_nunique_rate_x', '211opversion_op_nunique_rate_y', '212opversion_op_nunique_rate_x', '213opversion_op_nunique_rate_y', '214opversion_op_nunique_rate_x', '215opversion_op_nunique_rate_y', '216opdevice1_uid_cnt_x', '217opdevice1_uid_cnt_y', '218opdevice1_uid_cnt_x', '219opdevice1_uid_cnt_y', '220opdevice1_uid_cnt_x', '221opdevice1_uid_cnt_y', '222opdevice1_uid_cnt_x', '223opdevice1_uid_cnt_y', '224opdevice1_op_cnt_rate_x', '225opdevice1_op_cnt_rate_y', '226opdevice1_op_cnt_rate_x', '227opdevice1_op_cnt_rate_y', '228opdevice1_op_cnt_rate_x', '229opdevice1_op_cnt_rate_y', '230opdevice1_op_cnt_rate_x', '231opdevice1_op_cnt_rate_y', '232opdevice1_uid_nunique_x', '233opdevice1_uid_nunique_y', '234opdevice1_uid_nunique_x', '235opdevice1_uid_nunique_y', '236opdevice1_uid_nunique_x', '237opdevice1_uid_nunique_y', '238opdevice1_uid_nunique_x', '239opdevice1_uid_nunique_y', '240opdevice1_op_nunique_rate_x', '241opdevice1_op_nunique_rate_y', '242opdevice1_op_nunique_rate_x', '243opdevice1_op_nunique_rate_y', '244opdevice1_op_nunique_rate_x', '245opdevice1_op_nunique_rate_y', '246opdevice1_op_nunique_rate_x', '247opdevice1_op_nunique_rate_y', '248opdevice2_uid_cnt_x', '249opdevice2_uid_cnt_y', '250opdevice2_uid_cnt_x', '251opdevice2_uid_cnt_y', '252opdevice2_uid_cnt_x', '253opdevice2_uid_cnt_y', '254opdevice2_uid_cnt_x', '255opdevice2_uid_cnt_y', '256opdevice2_op_cnt_rate_x', '257opdevice2_op_cnt_rate_y', '258opdevice2_op_cnt_rate_x', '259opdevice2_op_cnt_rate_y', '260opdevice2_op_cnt_rate_x', '261opdevice2_op_cnt_rate_y', '262opdevice2_op_cnt_rate_x', '263opdevice2_op_cnt_rate_y', '264opdevice2_uid_nunique_x', '265opdevice2_uid_nunique_y', '266opdevice2_uid_nunique_x', '267opdevice2_uid_nunique_y', '268opdevice2_uid_nunique_x', '269opdevice2_uid_nunique_y', '270opdevice2_uid_nunique_x', '271opdevice2_uid_nunique_y', '272opdevice2_op_nunique_rate_x', '273opdevice2_op_nunique_rate_y', '274opdevice2_op_nunique_rate_x', '275opdevice2_op_nunique_rate_y', '276opdevice2_op_nunique_rate_x', '277opdevice2_op_nunique_rate_y', '278opdevice2_op_nunique_rate_x', '279opdevice2_op_nunique_rate_y', '280opdevice_code1_uid_cnt_x', '281opdevice_code1_uid_cnt_y', '282opdevice_code1_uid_cnt_x', '283opdevice_code1_uid_cnt_y', '284opdevice_code1_uid_cnt_x', '285opdevice_code1_uid_cnt_y', '286opdevice_code1_uid_cnt_x', '287opdevice_code1_uid_cnt_y', '288opdevice_code1_op_cnt_rate_x', '289opdevice_code1_op_cnt_rate_y', '290opdevice_code1_op_cnt_rate_x', '291opdevice_code1_op_cnt_rate_y', '292opdevice_code1_op_cnt_rate_x', '293opdevice_code1_op_cnt_rate_y', '294opdevice_code1_op_cnt_rate_x', '295opdevice_code1_op_cnt_rate_y', '296opdevice_code1_uid_nunique_x', '297opdevice_code1_uid_nunique_y', '298opdevice_code1_uid_nunique_x', '299opdevice_code1_uid_nunique_y', '300opdevice_code1_uid_nunique_x', '301opdevice_code1_uid_nunique_y', '302opdevice_code1_uid_nunique_x', '303opdevice_code1_uid_nunique_y', '304opdevice_code1_op_nunique_rate_x', '305opdevice_code1_op_nunique_rate_y', '306opdevice_code1_op_nunique_rate_x', '307opdevice_code1_op_nunique_rate_y', '308opdevice_code1_op_nunique_rate_x', '309opdevice_code1_op_nunique_rate_y', '310opdevice_code1_op_nunique_rate_x', '311opdevice_code1_op_nunique_rate_y', '312opdevice_code2_uid_cnt_x', '313opdevice_code2_uid_cnt_y', '314opdevice_code2_uid_cnt_x', '315opdevice_code2_uid_cnt_y', '316opdevice_code2_uid_cnt_x', '317opdevice_code2_uid_cnt_y', '318opdevice_code2_uid_cnt_x', '319opdevice_code2_uid_cnt_y', '320opdevice_code2_op_cnt_rate_x', '321opdevice_code2_op_cnt_rate_y', '322opdevice_code2_op_cnt_rate_x', '323opdevice_code2_op_cnt_rate_y', '324opdevice_code2_op_cnt_rate_x', '325opdevice_code2_op_cnt_rate_y', '326opdevice_code2_op_cnt_rate_x', '327opdevice_code2_op_cnt_rate_y', '328opdevice_code2_uid_nunique_x', '329opdevice_code2_uid_nunique_y', '330opdevice_code2_uid_nunique_x', '331opdevice_code2_uid_nunique_y', '332opdevice_code2_uid_nunique_x', '333opdevice_code2_uid_nunique_y', '334opdevice_code2_uid_nunique_x', '335opdevice_code2_uid_nunique_y', '336opdevice_code2_op_nunique_rate_x', '337opdevice_code2_op_nunique_rate_y', '338opdevice_code2_op_nunique_rate_x', '339opdevice_code2_op_nunique_rate_y', '340opdevice_code2_op_nunique_rate_x', '341opdevice_code2_op_nunique_rate_y', '342opdevice_code2_op_nunique_rate_x', '343opdevice_code2_op_nunique_rate_y', '344opmac1_uid_cnt_x', '345opmac1_uid_cnt_y', '346opmac1_uid_cnt_x', '347opmac1_uid_cnt_y', '348opmac1_uid_cnt_x', '349opmac1_uid_cnt_y', '350opmac1_uid_cnt_x', '351opmac1_uid_cnt_y', '352opmac1_op_cnt_rate_x', '353opmac1_op_cnt_rate_y', '354opmac1_op_cnt_rate_x', '355opmac1_op_cnt_rate_y', '356opmac1_op_cnt_rate_x', '357opmac1_op_cnt_rate_y', '358opmac1_op_cnt_rate_x', '359opmac1_op_cnt_rate_y', '360opmac1_uid_nunique_x', '361opmac1_uid_nunique_y', '362opmac1_uid_nunique_x', '363opmac1_uid_nunique_y', '364opmac1_uid_nunique_x', '365opmac1_uid_nunique_y', '366opmac1_uid_nunique_x', '367opmac1_uid_nunique_y', '368opmac1_op_nunique_rate_x', '369opmac1_op_nunique_rate_y', '370opmac1_op_nunique_rate_x', '371opmac1_op_nunique_rate_y', '372opmac1_op_nunique_rate_x', '373opmac1_op_nunique_rate_y', '374opmac1_op_nunique_rate_x', '375opmac1_op_nunique_rate_y', '376opip1_uid_cnt_x', '377opip1_uid_cnt_y', '378opip1_uid_cnt_x', '379opip1_uid_cnt_y', '380opip1_uid_cnt_x', '381opip1_uid_cnt_y', '382opip1_uid_cnt_x', '383opip1_uid_cnt_y', '384opip1_op_cnt_rate_x', '385opip1_op_cnt_rate_y', '386opip1_op_cnt_rate_x', '387opip1_op_cnt_rate_y', '388opip1_op_cnt_rate_x', '389opip1_op_cnt_rate_y', '390opip1_op_cnt_rate_x', '391opip1_op_cnt_rate_y', '392opip1_uid_nunique_x', '393opip1_uid_nunique_y', '394opip1_uid_nunique_x', '395opip1_uid_nunique_y', '396opip1_uid_nunique_x', '397opip1_uid_nunique_y', '398opip1_uid_nunique_x', '399opip1_uid_nunique_y', '400opip1_op_nunique_rate_x', '401opip1_op_nunique_rate_y', '402opip1_op_nunique_rate_x', '403opip1_op_nunique_rate_y', '404opip1_op_nunique_rate_x', '405opip1_op_nunique_rate_y', '406opip1_op_nunique_rate_x', '407opip1_op_nunique_rate_y', '408opip2_uid_cnt_x', '409opip2_uid_cnt_y', '410opip2_uid_cnt_x', '411opip2_uid_cnt_y', '412opip2_uid_cnt_x', '413opip2_uid_cnt_y', '414opip2_uid_cnt_x', '415opip2_uid_cnt_y', '416opip2_op_cnt_rate_x', '417opip2_op_cnt_rate_y', '418opip2_op_cnt_rate_x', '419opip2_op_cnt_rate_y', '420opip2_op_cnt_rate_x', '421opip2_op_cnt_rate_y', '422opip2_op_cnt_rate_x', '423opip2_op_cnt_rate_y', '424opip2_uid_nunique_x', '425opip2_uid_nunique_y', '426opip2_uid_nunique_x', '427opip2_uid_nunique_y', '428opip2_uid_nunique_x', '429opip2_uid_nunique_y', '430opip2_uid_nunique_x', '431opip2_uid_nunique_y', '432opip2_op_nunique_rate_x', '433opip2_op_nunique_rate_y', '434opip2_op_nunique_rate_x', '435opip2_op_nunique_rate_y', '436opip2_op_nunique_rate_x', '437opip2_op_nunique_rate_y', '438opip2_op_nunique_rate_x', '439opip2_op_nunique_rate_y', '440opdevice_code3_uid_cnt_x', '441opdevice_code3_uid_cnt_y', '442opdevice_code3_uid_cnt_x', '443opdevice_code3_uid_cnt_y', '444opdevice_code3_uid_cnt_x', '445opdevice_code3_uid_cnt_y', '446opdevice_code3_uid_cnt_x', '447opdevice_code3_uid_cnt_y', '448opdevice_code3_op_cnt_rate_x', '449opdevice_code3_op_cnt_rate_y', '450opdevice_code3_op_cnt_rate_x', '451opdevice_code3_op_cnt_rate_y', '452opdevice_code3_op_cnt_rate_x', '453opdevice_code3_op_cnt_rate_y', '454opdevice_code3_op_cnt_rate_x', '455opdevice_code3_op_cnt_rate_y', '456opdevice_code3_uid_nunique_x', '457opdevice_code3_uid_nunique_y', '458opdevice_code3_uid_nunique_x', '459opdevice_code3_uid_nunique_y', '460opdevice_code3_uid_nunique_x', '461opdevice_code3_uid_nunique_y', '462opdevice_code3_uid_nunique_x', '463opdevice_code3_uid_nunique_y', '464opdevice_code3_op_nunique_rate_x', '465opdevice_code3_op_nunique_rate_y', '466opdevice_code3_op_nunique_rate_x', '467opdevice_code3_op_nunique_rate_y', '468opdevice_code3_op_nunique_rate_x', '469opdevice_code3_op_nunique_rate_y', '470opdevice_code3_op_nunique_rate_x', '471opdevice_code3_op_nunique_rate_y', '472opmac2_uid_cnt_x', '473opmac2_uid_cnt_y', '474opmac2_uid_cnt_x', '475opmac2_uid_cnt_y', '476opmac2_uid_cnt_x', '477opmac2_uid_cnt_y', '478opmac2_uid_cnt_x', '479opmac2_uid_cnt_y', '480opmac2_op_cnt_rate_x', '481opmac2_op_cnt_rate_y', '482opmac2_op_cnt_rate_x', '483opmac2_op_cnt_rate_y', '484opmac2_op_cnt_rate_x', '485opmac2_op_cnt_rate_y', '486opmac2_op_cnt_rate_x', '487opmac2_op_cnt_rate_y', '488opmac2_uid_nunique_x', '489opmac2_uid_nunique_y', '490opmac2_uid_nunique_x', '491opmac2_uid_nunique_y', '492opmac2_uid_nunique_x', '493opmac2_uid_nunique_y', '494opmac2_uid_nunique_x', '495opmac2_uid_nunique_y', '496opmac2_op_nunique_rate_x', '497opmac2_op_nunique_rate_y', '498opmac2_op_nunique_rate_x', '499opmac2_op_nunique_rate_y', '500opmac2_op_nunique_rate_x', '501opmac2_op_nunique_rate_y', '502opmac2_op_nunique_rate_x', '503opmac2_op_nunique_rate_y', '504opwifi_uid_cnt_x', '505opwifi_uid_cnt_y', '506opwifi_uid_cnt_x', '507opwifi_uid_cnt_y', '508opwifi_uid_cnt_x', '509opwifi_uid_cnt_y', '510opwifi_uid_cnt_x', '511opwifi_uid_cnt_y', '512opwifi_op_cnt_rate_x', '513opwifi_op_cnt_rate_y', '514opwifi_op_cnt_rate_x', '515opwifi_op_cnt_rate_y', '516opwifi_op_cnt_rate_x', '517opwifi_op_cnt_rate_y', '518opwifi_op_cnt_rate_x', '519opwifi_op_cnt_rate_y', '520opwifi_uid_nunique_x', '521opwifi_uid_nunique_y', '522opwifi_uid_nunique_x', '523opwifi_uid_nunique_y', '524opwifi_uid_nunique_x', '525opwifi_uid_nunique_y', '526opwifi_uid_nunique_x', '527opwifi_uid_nunique_y', '528opwifi_op_nunique_rate_x', '529opwifi_op_nunique_rate_y', '530opwifi_op_nunique_rate_x', '531opwifi_op_nunique_rate_y', '532opwifi_op_nunique_rate_x', '533opwifi_op_nunique_rate_y', '534opwifi_op_nunique_rate_x', '535opwifi_op_nunique_rate_y', '536opgeo_code_uid_cnt_x', '537opgeo_code_uid_cnt_y', '538opgeo_code_uid_cnt_x', '539opgeo_code_uid_cnt_y', '540opgeo_code_uid_cnt_x', '541opgeo_code_uid_cnt_y', '542opgeo_code_uid_cnt_x', '543opgeo_code_uid_cnt_y', '544opgeo_code_op_cnt_rate_x', '545opgeo_code_op_cnt_rate_y', '546opgeo_code_op_cnt_rate_x', '547opgeo_code_op_cnt_rate_y', '548opgeo_code_op_cnt_rate_x', '549opgeo_code_op_cnt_rate_y', '550opgeo_code_op_cnt_rate_x', '551opgeo_code_op_cnt_rate_y', '552opgeo_code_uid_nunique_x', '553opgeo_code_uid_nunique_y', '554opgeo_code_uid_nunique_x', '555opgeo_code_uid_nunique_y', '556opgeo_code_uid_nunique_x', '557opgeo_code_uid_nunique_y', '558opgeo_code_uid_nunique_x', '559opgeo_code_uid_nunique_y', '560opgeo_code_op_nunique_rate_x', '561opgeo_code_op_nunique_rate_y', '562opgeo_code_op_nunique_rate_x', '563opgeo_code_op_nunique_rate_y', '564opgeo_code_op_nunique_rate_x', '565opgeo_code_op_nunique_rate_y', '566opgeo_code_op_nunique_rate_x', '567opgeo_code_op_nunique_rate_y', '568opip1_sub_uid_cnt_x', '569opip1_sub_uid_cnt_y', '570opip1_sub_uid_cnt_x', '571opip1_sub_uid_cnt_y', '572opip1_sub_uid_cnt_x', '573opip1_sub_uid_cnt_y', '574opip1_sub_uid_cnt_x', '575opip1_sub_uid_cnt_y', '576opip1_sub_op_cnt_rate_x', '577opip1_sub_op_cnt_rate_y', '578opip1_sub_op_cnt_rate_x', '579opip1_sub_op_cnt_rate_y', '580opip1_sub_op_cnt_rate_x', '581opip1_sub_op_cnt_rate_y', '582opip1_sub_op_cnt_rate_x', '583opip1_sub_op_cnt_rate_y', '584opip1_sub_uid_nunique_x', '585opip1_sub_uid_nunique_y', '586opip1_sub_uid_nunique_x', '587opip1_sub_uid_nunique_y', '588opip1_sub_uid_nunique_x', '589opip1_sub_uid_nunique_y', '590opip1_sub_uid_nunique_x', '591opip1_sub_uid_nunique_y', '592opip1_sub_op_nunique_rate_x', '593opip1_sub_op_nunique_rate_y', '594opip1_sub_op_nunique_rate_x', '595opip1_sub_op_nunique_rate_y', '596opip1_sub_op_nunique_rate_x', '597opip1_sub_op_nunique_rate_y', '598opip1_sub_op_nunique_rate_x', '599opip1_sub_op_nunique_rate_y', '600opip2_sub_uid_cnt_x', '601opip2_sub_uid_cnt_y', '602opip2_sub_uid_cnt_x', '603opip2_sub_uid_cnt_y', '604opip2_sub_uid_cnt_x', '605opip2_sub_uid_cnt_y', '606opip2_sub_uid_cnt_x', '607opip2_sub_uid_cnt_y', '608opip2_sub_op_cnt_rate_x', '609opip2_sub_op_cnt_rate_y', '610opip2_sub_op_cnt_rate_x', '611opip2_sub_op_cnt_rate_y', '612opip2_sub_op_cnt_rate_x', '613opip2_sub_op_cnt_rate_y', '614opip2_sub_op_cnt_rate_x', '615opip2_sub_op_cnt_rate_y', '616opip2_sub_uid_nunique_x', '617opip2_sub_uid_nunique_y', '618opip2_sub_uid_nunique_x', '619opip2_sub_uid_nunique_y', '620opip2_sub_uid_nunique_x', '621opip2_sub_uid_nunique_y', '622opip2_sub_uid_nunique_x', '623opip2_sub_uid_nunique_y', '624opip2_sub_op_nunique_rate_x', '625opip2_sub_op_nunique_rate_y', '626opip2_sub_op_nunique_rate_x', '627opip2_sub_op_nunique_rate_y', '628opip2_sub_op_nunique_rate_x', '629opip2_sub_op_nunique_rate_y', '630opip2_sub_op_nunique_rate_x', '631opip2_sub_op_nunique_rate_y', 'channel_x', 'channel_y', 'channel_x.1', 'channel_y.1', 'channel_x.2', 'channel_y.2', 'channel_x.3', 'channel_y.3', 'day_x', 'day_y', 'day_x.1', 'day_y.1', 'day_x.2', 'day_y.2', 'day_x.3', 'day_y.3', 'trans_amt_x', 'trans_amt_y', 'trans_amt_x.1', 'trans_amt_y.1', 'trans_amt_x.2', 'trans_amt_y.2', 'trans_amt_x.3', 'trans_amt_y.3', 'bal_x', 'bal_y', 'bal_x.1', 'bal_y.1', 'bal_x.2', 'bal_y.2', 'bal_x.3', 'bal_y.3', 'trans_type2_x', 'trans_type2_y', 'trans_type2_x.1', 'trans_type2_y.1', 'trans_type2_x.2', 'trans_type2_y.2', 'trans_type2_x.3', 'trans_type2_y.3', 'market_type_x', 'market_type_y', 'market_type_x.1', 'market_type_y.1', 'market_type_x.2', 'market_type_y.2', 'market_type_x.3', 'market_type_y.3', 'day_uid_cnt_x', 'day_uid_cnt_y', 'day_uid_cnt_x.1', 'day_uid_cnt_y.1', 'day_uid_cnt_x.2', 'day_uid_cnt_y.2', 'day_uid_cnt_x.3', 'day_uid_cnt_y.3', 'day_trsct_cnt_rate_x', 'day_trsct_cnt_rate_y', 'day_trsct_cnt_rate_x.1', 'day_trsct_cnt_rate_y.1', 'day_trsct_cnt_rate_x.2', 'day_trsct_cnt_rate_y.2', 'day_trsct_cnt_rate_x.3', 'day_trsct_cnt_rate_y.3', 'day_uid_nunique_x', 'day_uid_nunique_y', 'day_uid_nunique_x.1', 'day_uid_nunique_y.1', 'day_uid_nunique_x.2', 'day_uid_nunique_y.2', 'day_uid_nunique_x.3', 'day_uid_nunique_y.3', 'day_trsct_nunique_rate_x', 'day_trsct_nunique_rate_y', 'day_trsct_nunique_rate_x.1', 'day_trsct_nunique_rate_y.1', 'day_trsct_nunique_rate_x.2', 'day_trsct_nunique_rate_y.2', 'day_trsct_nunique_rate_x.3', 'day_trsct_nunique_rate_y.3', 'channel_uid_cnt_x', 'channel_uid_cnt_y', 'channel_uid_cnt_x.1', 'channel_uid_cnt_y.1', 'channel_uid_cnt_x.2', 'channel_uid_cnt_y.2', 'channel_uid_cnt_x.3', 'channel_uid_cnt_y.3', 'channel_trsct_cnt_rate_x', 'channel_trsct_cnt_rate_y', 'channel_trsct_cnt_rate_x.1', 'channel_trsct_cnt_rate_y.1', 'channel_trsct_cnt_rate_x.2', 'channel_trsct_cnt_rate_y.2', 'channel_trsct_cnt_rate_x.3', 'channel_trsct_cnt_rate_y.3', 'channel_uid_nunique_x', 'channel_uid_nunique_y', 'channel_uid_nunique_x.1', 'channel_uid_nunique_y.1', 'channel_uid_nunique_x.2', 'channel_uid_nunique_y.2', 'channel_uid_nunique_x.3', 'channel_uid_nunique_y.3', 'channel_trsct_nunique_rate_x', 'channel_trsct_nunique_rate_y', 'channel_trsct_nunique_rate_x.1', 'channel_trsct_nunique_rate_y.1', 'channel_trsct_nunique_rate_x.2', 'channel_trsct_nunique_rate_y.2', 'channel_trsct_nunique_rate_x.3', 'channel_trsct_nunique_rate_y.3', 'trans_amt_uid_cnt_x', 'trans_amt_uid_cnt_y', 'trans_amt_uid_cnt_x.1', 'trans_amt_uid_cnt_y.1', 'trans_amt_uid_cnt_x.2', 'trans_amt_uid_cnt_y.2', 'trans_amt_uid_cnt_x.3', 'trans_amt_uid_cnt_y.3', 'trans_amt_trsct_cnt_rate_x', 'trans_amt_trsct_cnt_rate_y', 'trans_amt_trsct_cnt_rate_x.1', 'trans_amt_trsct_cnt_rate_y.1', 'trans_amt_trsct_cnt_rate_x.2', 'trans_amt_trsct_cnt_rate_y.2', 'trans_amt_trsct_cnt_rate_x.3', 'trans_amt_trsct_cnt_rate_y.3', 'trans_amt_uid_nunique_x', 'trans_amt_uid_nunique_y', 'trans_amt_uid_nunique_x.1', 'trans_amt_uid_nunique_y.1', 'trans_amt_uid_nunique_x.2', 'trans_amt_uid_nunique_y.2', 'trans_amt_uid_nunique_x.3', 'trans_amt_uid_nunique_y.3', 'trans_amt_trsct_nunique_rate_x', 'trans_amt_trsct_nunique_rate_y', 'trans_amt_trsct_nunique_rate_x.1', 'trans_amt_trsct_nunique_rate_y.1', 'trans_amt_trsct_nunique_rate_x.2', 'trans_amt_trsct_nunique_rate_y.2', 'trans_amt_trsct_nunique_rate_x.3', 'trans_amt_trsct_nunique_rate_y.3', 'time_uid_cnt_x', 'time_uid_cnt_y', 'time_uid_cnt_x.1', 'time_uid_cnt_y.1', 'time_uid_cnt_x.2', 'time_uid_cnt_y.2', 'time_uid_cnt_x.3', 'time_uid_cnt_y.3', 'time_trsct_cnt_rate_x', 'time_trsct_cnt_rate_y', 'time_trsct_cnt_rate_x.1', 'time_trsct_cnt_rate_y.1', 'time_trsct_cnt_rate_x.2', 'time_trsct_cnt_rate_y.2', 'time_trsct_cnt_rate_x.3', 'time_trsct_cnt_rate_y.3', 'time_uid_nunique_x', 'time_uid_nunique_y', 'time_uid_nunique_x.1', 'time_uid_nunique_y.1', 'time_uid_nunique_x.2', 'time_uid_nunique_y.2', 'time_uid_nunique_x.3', 'time_uid_nunique_y.3', 'time_trsct_nunique_rate_x', 'time_trsct_nunique_rate_y', 'time_trsct_nunique_rate_x.1', 'time_trsct_nunique_rate_y.1', 'time_trsct_nunique_rate_x.2', 'time_trsct_nunique_rate_y.2', 'time_trsct_nunique_rate_x.3', 'time_trsct_nunique_rate_y.3', 'amt_src1_uid_cnt_x', 'amt_src1_uid_cnt_y', 'amt_src1_uid_cnt_x.1', 'amt_src1_uid_cnt_y.1', 'amt_src1_uid_cnt_x.2', 'amt_src1_uid_cnt_y.2', 'amt_src1_uid_cnt_x.3', 'amt_src1_uid_cnt_y.3', 'amt_src1_trsct_cnt_rate_x', 'amt_src1_trsct_cnt_rate_y', 'amt_src1_trsct_cnt_rate_x.1', 'amt_src1_trsct_cnt_rate_y.1', 'amt_src1_trsct_cnt_rate_x.2', 'amt_src1_trsct_cnt_rate_y.2', 'amt_src1_trsct_cnt_rate_x.3', 'amt_src1_trsct_cnt_rate_y.3', 'amt_src1_uid_nunique_x', 'amt_src1_uid_nunique_y', 'amt_src1_uid_nunique_x.1', 'amt_src1_uid_nunique_y.1', 'amt_src1_uid_nunique_x.2', 'amt_src1_uid_nunique_y.2', 'amt_src1_uid_nunique_x.3', 'amt_src1_uid_nunique_y.3', 'amt_src1_trsct_nunique_rate_x', 'amt_src1_trsct_nunique_rate_y', 'amt_src1_trsct_nunique_rate_x.1', 'amt_src1_trsct_nunique_rate_y.1', 'amt_src1_trsct_nunique_rate_x.2', 'amt_src1_trsct_nunique_rate_y.2', 'amt_src1_trsct_nunique_rate_x.3', 'amt_src1_trsct_nunique_rate_y.3', 'merchant_uid_cnt_x', 'merchant_uid_cnt_y', 'merchant_uid_cnt_x.1', 'merchant_uid_cnt_y.1', 'merchant_uid_cnt_x.2', 'merchant_uid_cnt_y.2', 'merchant_uid_cnt_x.3', 'merchant_uid_cnt_y.3', 'merchant_trsct_cnt_rate_x', 'merchant_trsct_cnt_rate_y', 'merchant_trsct_cnt_rate_x.1', 'merchant_trsct_cnt_rate_y.1', 'merchant_trsct_cnt_rate_x.2', 'merchant_trsct_cnt_rate_y.2', 'merchant_trsct_cnt_rate_x.3', 'merchant_trsct_cnt_rate_y.3', 'merchant_uid_nunique_x', 'merchant_uid_nunique_y', 'merchant_uid_nunique_x.1', 'merchant_uid_nunique_y.1', 'merchant_uid_nunique_x.2', 'merchant_uid_nunique_y.2', 'merchant_uid_nunique_x.3', 'merchant_uid_nunique_y.3', 'merchant_trsct_nunique_rate_x', 'merchant_trsct_nunique_rate_y', 'merchant_trsct_nunique_rate_x.1', 'merchant_trsct_nunique_rate_y.1', 'merchant_trsct_nunique_rate_x.2', 'merchant_trsct_nunique_rate_y.2', 'merchant_trsct_nunique_rate_x.3', 'merchant_trsct_nunique_rate_y.3', 'code1_uid_cnt_x', 'code1_uid_cnt_y', 'code1_uid_cnt_x.1', 'code1_uid_cnt_y.1', 'code1_uid_cnt_x.2', 'code1_uid_cnt_y.2', 'code1_uid_cnt_x.3', 'code1_uid_cnt_y.3', 'code1_trsct_cnt_rate_x', 'code1_trsct_cnt_rate_y', 'code1_trsct_cnt_rate_x.1', 'code1_trsct_cnt_rate_y.1', 'code1_trsct_cnt_rate_x.2', 'code1_trsct_cnt_rate_y.2', 'code1_trsct_cnt_rate_x.3', 'code1_trsct_cnt_rate_y.3', 'code1_uid_nunique_x', 'code1_uid_nunique_y', 'code1_uid_nunique_x.1', 'code1_uid_nunique_y.1', 'code1_uid_nunique_x.2', 'code1_uid_nunique_y.2', 'code1_uid_nunique_x.3', 'code1_uid_nunique_y.3', 'code1_trsct_nunique_rate_x', 'code1_trsct_nunique_rate_y', 'code1_trsct_nunique_rate_x.1', 'code1_trsct_nunique_rate_y.1', 'code1_trsct_nunique_rate_x.2', 'code1_trsct_nunique_rate_y.2', 'code1_trsct_nunique_rate_x.3', 'code1_trsct_nunique_rate_y.3', 'code2_uid_cnt_x', 'code2_uid_cnt_y', 'code2_uid_cnt_x.1', 'code2_uid_cnt_y.1', 'code2_uid_cnt_x.2', 'code2_uid_cnt_y.2', 'code2_uid_cnt_x.3', 'code2_uid_cnt_y.3', 'code2_trsct_cnt_rate_x', 'code2_trsct_cnt_rate_y', 'code2_trsct_cnt_rate_x.1', 'code2_trsct_cnt_rate_y.1', 'code2_trsct_cnt_rate_x.2', 'code2_trsct_cnt_rate_y.2', 'code2_trsct_cnt_rate_x.3', 'code2_trsct_cnt_rate_y.3', 'code2_uid_nunique_x', 'code2_uid_nunique_y', 'code2_uid_nunique_x.1', 'code2_uid_nunique_y.1', 'code2_uid_nunique_x.2', 'code2_uid_nunique_y.2', 'code2_uid_nunique_x.3', 'code2_uid_nunique_y.3', 'code2_trsct_nunique_rate_x', 'code2_trsct_nunique_rate_y', 'code2_trsct_nunique_rate_x.1', 'code2_trsct_nunique_rate_y.1', 'code2_trsct_nunique_rate_x.2', 'code2_trsct_nunique_rate_y.2', 'code2_trsct_nunique_rate_x.3', 'code2_trsct_nunique_rate_y.3', 'trans_type1_uid_cnt_x', 'trans_type1_uid_cnt_y', 'trans_type1_uid_cnt_x.1', 'trans_type1_uid_cnt_y.1', 'trans_type1_uid_cnt_x.2', 'trans_type1_uid_cnt_y.2', 'trans_type1_uid_cnt_x.3', 'trans_type1_uid_cnt_y.3', 'trans_type1_trsct_cnt_rate_x', 'trans_type1_trsct_cnt_rate_y', 'trans_type1_trsct_cnt_rate_x.1', 'trans_type1_trsct_cnt_rate_y.1', 'trans_type1_trsct_cnt_rate_x.2', 'trans_type1_trsct_cnt_rate_y.2', 'trans_type1_trsct_cnt_rate_x.3', 'trans_type1_trsct_cnt_rate_y.3', 'trans_type1_uid_nunique_x', 'trans_type1_uid_nunique_y', 'trans_type1_uid_nunique_x.1', 'trans_type1_uid_nunique_y.1', 'trans_type1_uid_nunique_x.2', 'trans_type1_uid_nunique_y.2', 'trans_type1_uid_nunique_x.3', 'trans_type1_uid_nunique_y.3', 'trans_type1_trsct_nunique_rate_x', 'trans_type1_trsct_nunique_rate_y', 'trans_type1_trsct_nunique_rate_x.1', 'trans_type1_trsct_nunique_rate_y.1', 'trans_type1_trsct_nunique_rate_x.2', 'trans_type1_trsct_nunique_rate_y.2', 'trans_type1_trsct_nunique_rate_x.3', 'trans_type1_trsct_nunique_rate_y.3', 'acc_id1_uid_cnt_x', 'acc_id1_uid_cnt_y', 'acc_id1_uid_cnt_x.1', 'acc_id1_uid_cnt_y.1', 'acc_id1_uid_cnt_x.2', 'acc_id1_uid_cnt_y.2', 'acc_id1_uid_cnt_x.3', 'acc_id1_uid_cnt_y.3', 'acc_id1_trsct_cnt_rate_x', 'acc_id1_trsct_cnt_rate_y', 'acc_id1_trsct_cnt_rate_x.1', 'acc_id1_trsct_cnt_rate_y.1', 'acc_id1_trsct_cnt_rate_x.2', 'acc_id1_trsct_cnt_rate_y.2', 'acc_id1_trsct_cnt_rate_x.3', 'acc_id1_trsct_cnt_rate_y.3', 'acc_id1_uid_nunique_x', 'acc_id1_uid_nunique_y', 'acc_id1_uid_nunique_x.1', 'acc_id1_uid_nunique_y.1', 'acc_id1_uid_nunique_x.2', 'acc_id1_uid_nunique_y.2', 'acc_id1_uid_nunique_x.3', 'acc_id1_uid_nunique_y.3', 'acc_id1_trsct_nunique_rate_x', 'acc_id1_trsct_nunique_rate_y', 'acc_id1_trsct_nunique_rate_x.1', 'acc_id1_trsct_nunique_rate_y.1', 'acc_id1_trsct_nunique_rate_x.2', 'acc_id1_trsct_nunique_rate_y.2', 'acc_id1_trsct_nunique_rate_x.3', 'acc_id1_trsct_nunique_rate_y.3', 'mac1_uid_cnt_x', 'mac1_uid_cnt_y', 'mac1_uid_cnt_x.1', 'mac1_uid_cnt_y.1', 'mac1_uid_cnt_x.2', 'mac1_uid_cnt_y.2', 'mac1_uid_cnt_x.3', 'mac1_uid_cnt_y.3', 'mac1_trsct_cnt_rate_x', 'mac1_trsct_cnt_rate_y', 'mac1_trsct_cnt_rate_x.1', 'mac1_trsct_cnt_rate_y.1', 'mac1_trsct_cnt_rate_x.2', 'mac1_trsct_cnt_rate_y.2', 'mac1_trsct_cnt_rate_x.3', 'mac1_trsct_cnt_rate_y.3', 'mac1_uid_nunique_x', 'mac1_uid_nunique_y', 'mac1_uid_nunique_x.1', 'mac1_uid_nunique_y.1', 'mac1_uid_nunique_x.2', 'mac1_uid_nunique_y.2', 'mac1_uid_nunique_x.3', 'mac1_uid_nunique_y.3', 'mac1_trsct_nunique_rate_x', 'mac1_trsct_nunique_rate_y', 'mac1_trsct_nunique_rate_x.1', 'mac1_trsct_nunique_rate_y.1', 'mac1_trsct_nunique_rate_x.2', 'mac1_trsct_nunique_rate_y.2', 'mac1_trsct_nunique_rate_x.3', 'mac1_trsct_nunique_rate_y.3', 'device2_uid_cnt_x', 'device2_uid_cnt_y', 'device2_uid_cnt_x.1', 'device2_uid_cnt_y.1', 'device2_uid_cnt_x.2', 'device2_uid_cnt_y.2', 'device2_uid_cnt_x.3', 'device2_uid_cnt_y.3', 'device2_trsct_cnt_rate_x', 'device2_trsct_cnt_rate_y', 'device2_trsct_cnt_rate_x.1', 'device2_trsct_cnt_rate_y.1', 'device2_trsct_cnt_rate_x.2', 'device2_trsct_cnt_rate_y.2', 'device2_trsct_cnt_rate_x.3', 'device2_trsct_cnt_rate_y.3', 'device2_uid_nunique_x', 'device2_uid_nunique_y', 'device2_uid_nunique_x.1', 'device2_uid_nunique_y.1', 'device2_uid_nunique_x.2', 'device2_uid_nunique_y.2', 'device2_uid_nunique_x.3', 'device2_uid_nunique_y.3', 'device2_trsct_nunique_rate_x', 'device2_trsct_nunique_rate_y', 'device2_trsct_nunique_rate_x.1', 'device2_trsct_nunique_rate_y.1', 'device2_trsct_nunique_rate_x.2', 'device2_trsct_nunique_rate_y.2', 'device2_trsct_nunique_rate_x.3', 'device2_trsct_nunique_rate_y.3', 'device1_uid_cnt_x', 'device1_uid_cnt_y', 'device1_uid_cnt_x.1', 'device1_uid_cnt_y.1', 'device1_uid_cnt_x.2', 'device1_uid_cnt_y.2', 'device1_uid_cnt_x.3', 'device1_uid_cnt_y.3', 'device1_trsct_cnt_rate_x', 'device1_trsct_cnt_rate_y', 'device1_trsct_cnt_rate_x.1', 'device1_trsct_cnt_rate_y.1', 'device1_trsct_cnt_rate_x.2', 'device1_trsct_cnt_rate_y.2', 'device1_trsct_cnt_rate_x.3', 'device1_trsct_cnt_rate_y.3', 'device1_uid_nunique_x', 'device1_uid_nunique_y', 'device1_uid_nunique_x.1', 'device1_uid_nunique_y.1', 'device1_uid_nunique_x.2', 'device1_uid_nunique_y.2', 'device1_uid_nunique_x.3', 'device1_uid_nunique_y.3', 'device1_trsct_nunique_rate_x', 'device1_trsct_nunique_rate_y', 'device1_trsct_nunique_rate_x.1', 'device1_trsct_nunique_rate_y.1', 'device1_trsct_nunique_rate_x.2', 'device1_trsct_nunique_rate_y.2', 'device1_trsct_nunique_rate_x.3', 'device1_trsct_nunique_rate_y.3', 'device_code3_uid_cnt_x', 'device_code3_uid_cnt_y', 'device_code3_uid_cnt_x.1', 'device_code3_uid_cnt_y.1', 'device_code3_uid_cnt_x.2', 'device_code3_uid_cnt_y.2', 'device_code3_uid_cnt_x.3', 'device_code3_uid_cnt_y.3', 'device_code3_trsct_cnt_rate_x', 'device_code3_trsct_cnt_rate_y', 'device_code3_trsct_cnt_rate_x.1', 'device_code3_trsct_cnt_rate_y.1', 'device_code3_trsct_cnt_rate_x.2', 'device_code3_trsct_cnt_rate_y.2', 'device_code3_trsct_cnt_rate_x.3', 'device_code3_trsct_cnt_rate_y.3', 'device_code3_uid_nunique_x', 'device_code3_uid_nunique_y', 'device_code3_uid_nunique_x.1', 'device_code3_uid_nunique_y.1', 'device_code3_uid_nunique_x.2', 'device_code3_uid_nunique_y.2', 'device_code3_uid_nunique_x.3', 'device_code3_uid_nunique_y.3', 'device_code3_trsct_nunique_rate_x', 'device_code3_trsct_nunique_rate_y', 'device_code3_trsct_nunique_rate_x.1', 'device_code3_trsct_nunique_rate_y.1', 'device_code3_trsct_nunique_rate_x.2', 'device_code3_trsct_nunique_rate_y.2', 'device_code3_trsct_nunique_rate_x.3', 'device_code3_trsct_nunique_rate_y.3', 'bal_uid_cnt_x', 'bal_uid_cnt_y', 'bal_uid_cnt_x.1', 'bal_uid_cnt_y.1', 'bal_uid_cnt_x.2', 'bal_uid_cnt_y.2', 'bal_uid_cnt_x.3', 'bal_uid_cnt_y.3', 'bal_trsct_cnt_rate_x', 'bal_trsct_cnt_rate_y', 'bal_trsct_cnt_rate_x.1', 'bal_trsct_cnt_rate_y.1', 'bal_trsct_cnt_rate_x.2', 'bal_trsct_cnt_rate_y.2', 'bal_trsct_cnt_rate_x.3', 'bal_trsct_cnt_rate_y.3', 'bal_uid_nunique_x', 'bal_uid_nunique_y', 'bal_uid_nunique_x.1', 'bal_uid_nunique_y.1', 'bal_uid_nunique_x.2', 'bal_uid_nunique_y.2', 'bal_uid_nunique_x.3', 'bal_uid_nunique_y.3', 'bal_trsct_nunique_rate_x', 'bal_trsct_nunique_rate_y', 'bal_trsct_nunique_rate_x.1', 'bal_trsct_nunique_rate_y.1', 'bal_trsct_nunique_rate_x.2', 'bal_trsct_nunique_rate_y.2', 'bal_trsct_nunique_rate_x.3', 'bal_trsct_nunique_rate_y.3', 'ip1_uid_cnt_x', 'ip1_uid_cnt_y', 'ip1_uid_cnt_x.1', 'ip1_uid_cnt_y.1', 'ip1_uid_cnt_x.2', 'ip1_uid_cnt_y.2', 'ip1_uid_cnt_x.3', 'ip1_uid_cnt_y.3', 'ip1_trsct_cnt_rate_x', 'ip1_trsct_cnt_rate_y', 'ip1_trsct_cnt_rate_x.1', 'ip1_trsct_cnt_rate_y.1', 'ip1_trsct_cnt_rate_x.2', 'ip1_trsct_cnt_rate_y.2', 'ip1_trsct_cnt_rate_x.3', 'ip1_trsct_cnt_rate_y.3', 'ip1_uid_nunique_x', 'ip1_uid_nunique_y', 'ip1_uid_nunique_x.1', 'ip1_uid_nunique_y.1', 'ip1_uid_nunique_x.2', 'ip1_uid_nunique_y.2', 'ip1_uid_nunique_x.3', 'ip1_uid_nunique_y.3', 'ip1_trsct_nunique_rate_x', 'ip1_trsct_nunique_rate_y', 'ip1_trsct_nunique_rate_x.1', 'ip1_trsct_nunique_rate_y.1', 'ip1_trsct_nunique_rate_x.2', 'ip1_trsct_nunique_rate_y.2', 'ip1_trsct_nunique_rate_x.3', 'ip1_trsct_nunique_rate_y.3', 'amt_src2_uid_cnt_x', 'amt_src2_uid_cnt_y', 'amt_src2_uid_cnt_x.1', 'amt_src2_uid_cnt_y.1', 'amt_src2_uid_cnt_x.2', 'amt_src2_uid_cnt_y.2', 'amt_src2_uid_cnt_x.3', 'amt_src2_uid_cnt_y.3', 'amt_src2_trsct_cnt_rate_x', 'amt_src2_trsct_cnt_rate_y', 'amt_src2_trsct_cnt_rate_x.1', 'amt_src2_trsct_cnt_rate_y.1', 'amt_src2_trsct_cnt_rate_x.2', 'amt_src2_trsct_cnt_rate_y.2', 'amt_src2_trsct_cnt_rate_x.3', 'amt_src2_trsct_cnt_rate_y.3', 'amt_src2_uid_nunique_x', 'amt_src2_uid_nunique_y', 'amt_src2_uid_nunique_x.1', 'amt_src2_uid_nunique_y.1', 'amt_src2_uid_nunique_x.2', 'amt_src2_uid_nunique_y.2', 'amt_src2_uid_nunique_x.3', 'amt_src2_uid_nunique_y.3', 'amt_src2_trsct_nunique_rate_x', 'amt_src2_trsct_nunique_rate_y', 'amt_src2_trsct_nunique_rate_x.1', 'amt_src2_trsct_nunique_rate_y.1', 'amt_src2_trsct_nunique_rate_x.2', 'amt_src2_trsct_nunique_rate_y.2', 'amt_src2_trsct_nunique_rate_x.3', 'amt_src2_trsct_nunique_rate_y.3', 'acc_id2_uid_cnt_x', 'acc_id2_uid_cnt_y', 'acc_id2_uid_cnt_x.1', 'acc_id2_uid_cnt_y.1', 'acc_id2_uid_cnt_x.2', 'acc_id2_uid_cnt_y.2', 'acc_id2_uid_cnt_x.3', 'acc_id2_uid_cnt_y.3', 'acc_id2_trsct_cnt_rate_x', 'acc_id2_trsct_cnt_rate_y', 'acc_id2_trsct_cnt_rate_x.1', 'acc_id2_trsct_cnt_rate_y.1', 'acc_id2_trsct_cnt_rate_x.2', 'acc_id2_trsct_cnt_rate_y.2', 'acc_id2_trsct_cnt_rate_x.3', 'acc_id2_trsct_cnt_rate_y.3', 'acc_id2_uid_nunique_x', 'acc_id2_uid_nunique_y', 'acc_id2_uid_nunique_x.1', 'acc_id2_uid_nunique_y.1', 'acc_id2_uid_nunique_x.2', 'acc_id2_uid_nunique_y.2', 'acc_id2_uid_nunique_x.3', 'acc_id2_uid_nunique_y.3', 'acc_id2_trsct_nunique_rate_x', 'acc_id2_trsct_nunique_rate_y', 'acc_id2_trsct_nunique_rate_x.1', 'acc_id2_trsct_nunique_rate_y.1', 'acc_id2_trsct_nunique_rate_x.2', 'acc_id2_trsct_nunique_rate_y.2', 'acc_id2_trsct_nunique_rate_x.3', 'acc_id2_trsct_nunique_rate_y.3', 'acc_id3_uid_cnt_x', 'acc_id3_uid_cnt_y', 'acc_id3_uid_cnt_x.1', 'acc_id3_uid_cnt_y.1', 'acc_id3_uid_cnt_x.2', 'acc_id3_uid_cnt_y.2', 'acc_id3_uid_cnt_x.3', 'acc_id3_uid_cnt_y.3', 'acc_id3_trsct_cnt_rate_x', 'acc_id3_trsct_cnt_rate_y', 'acc_id3_trsct_cnt_rate_x.1', 'acc_id3_trsct_cnt_rate_y.1', 'acc_id3_trsct_cnt_rate_x.2', 'acc_id3_trsct_cnt_rate_y.2', 'acc_id3_trsct_cnt_rate_x.3', 'acc_id3_trsct_cnt_rate_y.3', 'acc_id3_uid_nunique_x', 'acc_id3_uid_nunique_y', 'acc_id3_uid_nunique_x.1', 'acc_id3_uid_nunique_y.1', 'acc_id3_uid_nunique_x.2', 'acc_id3_uid_nunique_y.2', 'acc_id3_uid_nunique_x.3', 'acc_id3_uid_nunique_y.3', 'acc_id3_trsct_nunique_rate_x', 'acc_id3_trsct_nunique_rate_y', 'acc_id3_trsct_nunique_rate_x.1', 'acc_id3_trsct_nunique_rate_y.1', 'acc_id3_trsct_nunique_rate_x.2', 'acc_id3_trsct_nunique_rate_y.2', 'acc_id3_trsct_nunique_rate_x.3', 'acc_id3_trsct_nunique_rate_y.3', 'geocode_uid_cnt_x', 'geocode_uid_cnt_y', 'geocode_uid_cnt_x.1', 'geocode_uid_cnt_y.1', 'geocode_uid_cnt_x.2', 'geocode_uid_cnt_y.2', 'geocode_uid_cnt_x.3', 'geocode_uid_cnt_y.3', 'geocode_trsct_cnt_rate_x', 'geocode_trsct_cnt_rate_y', 'geocode_trsct_cnt_rate_x.1', 'geocode_trsct_cnt_rate_y.1', 'geocode_trsct_cnt_rate_x.2', 'geocode_trsct_cnt_rate_y.2', 'geocode_trsct_cnt_rate_x.3', 'geocode_trsct_cnt_rate_y.3', 'geocode_uid_nunique_x', 'geocode_uid_nunique_y', 'geocode_uid_nunique_x.1', 'geocode_uid_nunique_y.1', 'geocode_uid_nunique_x.2', 'geocode_uid_nunique_y.2', 'geocode_uid_nunique_x.3', 'geocode_uid_nunique_y.3', 'geocode_trsct_nunique_rate_x', 'geocode_trsct_nunique_rate_y', 'geocode_trsct_nunique_rate_x.1', 'geocode_trsct_nunique_rate_y.1', 'geocode_trsct_nunique_rate_x.2', 'geocode_trsct_nunique_rate_y.2', 'geocode_trsct_nunique_rate_x.3', 'geocode_trsct_nunique_rate_y.3', 'trans_type2_uid_cnt_x', 'trans_type2_uid_cnt_y', 'trans_type2_uid_cnt_x.1', 'trans_type2_uid_cnt_y.1', 'trans_type2_uid_cnt_x.2', 'trans_type2_uid_cnt_y.2', 'trans_type2_uid_cnt_x.3', 'trans_type2_uid_cnt_y.3', 'trans_type2_trsct_cnt_rate_x', 'trans_type2_trsct_cnt_rate_y', 'trans_type2_trsct_cnt_rate_x.1', 'trans_type2_trsct_cnt_rate_y.1', 'trans_type2_trsct_cnt_rate_x.2', 'trans_type2_trsct_cnt_rate_y.2', 'trans_type2_trsct_cnt_rate_x.3', 'trans_type2_trsct_cnt_rate_y.3', 'trans_type2_uid_nunique_x', 'trans_type2_uid_nunique_y', 'trans_type2_uid_nunique_x.1', 'trans_type2_uid_nunique_y.1', 'trans_type2_uid_nunique_x.2', 'trans_type2_uid_nunique_y.2', 'trans_type2_uid_nunique_x.3', 'trans_type2_uid_nunique_y.3', 'trans_type2_trsct_nunique_rate_x', 'trans_type2_trsct_nunique_rate_y', 'trans_type2_trsct_nunique_rate_x.1', 'trans_type2_trsct_nunique_rate_y.1', 'trans_type2_trsct_nunique_rate_x.2', 'trans_type2_trsct_nunique_rate_y.2', 'trans_type2_trsct_nunique_rate_x.3', 'trans_type2_trsct_nunique_rate_y.3', 'market_code_uid_cnt_x', 'market_code_uid_cnt_y', 'market_code_uid_cnt_x.1', 'market_code_uid_cnt_y.1', 'market_code_uid_cnt_x.2', 'market_code_uid_cnt_y.2', 'market_code_uid_cnt_x.3', 'market_code_uid_cnt_y.3', 'market_code_trsct_cnt_rate_x', 'market_code_trsct_cnt_rate_y', 'market_code_trsct_cnt_rate_x.1', 'market_code_trsct_cnt_rate_y.1', 'market_code_trsct_cnt_rate_x.2', 'market_code_trsct_cnt_rate_y.2', 'market_code_trsct_cnt_rate_x.3', 'market_code_trsct_cnt_rate_y.3', 'market_code_uid_nunique_x', 'market_code_uid_nunique_y', 'market_code_uid_nunique_x.1', 'market_code_uid_nunique_y.1', 'market_code_uid_nunique_x.2', 'market_code_uid_nunique_y.2', 'market_code_uid_nunique_x.3', 'market_code_uid_nunique_y.3', 'market_code_trsct_nunique_rate_x', 'market_code_trsct_nunique_rate_y', 'market_code_trsct_nunique_rate_x.1', 'market_code_trsct_nunique_rate_y.1', 'market_code_trsct_nunique_rate_x.2', 'market_code_trsct_nunique_rate_y.2', 'market_code_trsct_nunique_rate_x.3', 'market_code_trsct_nunique_rate_y.3', 'market_type_uid_cnt_x', 'market_type_uid_cnt_y', 'market_type_uid_cnt_x.1', 'market_type_uid_cnt_y.1', 'market_type_uid_cnt_x.2', 'market_type_uid_cnt_y.2', 'market_type_uid_cnt_x.3', 'market_type_uid_cnt_y.3', 'market_type_trsct_cnt_rate_x', 'market_type_trsct_cnt_rate_y', 'market_type_trsct_cnt_rate_x.1', 'market_type_trsct_cnt_rate_y.1', 'market_type_trsct_cnt_rate_x.2', 'market_type_trsct_cnt_rate_y.2', 'market_type_trsct_cnt_rate_x.3', 'market_type_trsct_cnt_rate_y.3', 'market_type_uid_nunique_x', 'market_type_uid_nunique_y', 'market_type_uid_nunique_x.1', 'market_type_uid_nunique_y.1', 'market_type_uid_nunique_x.2', 'market_type_uid_nunique_y.2', 'market_type_uid_nunique_x.3', 'market_type_uid_nunique_y.3', 'market_type_trsct_nunique_rate_x', 'market_type_trsct_nunique_rate_y', 'market_type_trsct_nunique_rate_x.1', 'market_type_trsct_nunique_rate_y.1', 'market_type_trsct_nunique_rate_x.2', 'market_type_trsct_nunique_rate_y.2', 'market_type_trsct_nunique_rate_x.3', 'market_type_trsct_nunique_rate_y.3', 'ip1_sub_uid_cnt_x', 'ip1_sub_uid_cnt_y', 'ip1_sub_uid_cnt_x.1', 'ip1_sub_uid_cnt_y.1', 'ip1_sub_uid_cnt_x.2', 'ip1_sub_uid_cnt_y.2', 'ip1_sub_uid_cnt_x.3', 'ip1_sub_uid_cnt_y.3', 'ip1_sub_trsct_cnt_rate_x', 'ip1_sub_trsct_cnt_rate_y', 'ip1_sub_trsct_cnt_rate_x.1', 'ip1_sub_trsct_cnt_rate_y.1', 'ip1_sub_trsct_cnt_rate_x.2', 'ip1_sub_trsct_cnt_rate_y.2', 'ip1_sub_trsct_cnt_rate_x.3', 'ip1_sub_trsct_cnt_rate_y.3', 'ip1_sub_uid_nunique_x', 'ip1_sub_uid_nunique_y', 'ip1_sub_uid_nunique_x.1', 'ip1_sub_uid_nunique_y.1', 'ip1_sub_uid_nunique_x.2', 'ip1_sub_uid_nunique_y.2', 'ip1_sub_uid_nunique_x.3', 'ip1_sub_uid_nunique_y.3', 'ip1_sub_trsct_nunique_rate_x', 'ip1_sub_trsct_nunique_rate_y', 'ip1_sub_trsct_nunique_rate_x.1', 'ip1_sub_trsct_nunique_rate_y.1', 'ip1_sub_trsct_nunique_rate_x.2', 'ip1_sub_trsct_nunique_rate_y.2', 'ip1_sub_trsct_nunique_rate_x.3', 'ip1_sub_trsct_nunique_rate_y.3']
j=0
#     if i<j:continue
#     j = i+ 8
#     name01 = col[4:8]+"_sum"+str(j)
#     name02 = col[4:8]+"_mean"+str(j)
#     print(j)
#     print(name01)
#     print(name02)
#     col = cols[i:i+8]
#     print(col)
#     merge[name01]=merge[col].sum(1)
#     merge[name02]=merge[col].mean(1)


# merge['op_day_sum']=merge[m_cols[2:10]].sum(1)
# merge['op_day_mean']=merge[m_cols[2:10]].mean(1)
# merge['op_success_mean']=merge[m_cols[10:18]].mean(1)
# merge['op_success_sum']=merge[m_cols[10:18]].sum(1)
# merge['op_os_sum']=merge[m_cols[18:26]].sum(1)
# merge['op_os_mean']=merge[m_cols[18:26]].mean(1)  # merge_ftr_analysis()